// wwwroot文件夹下面有images css js 以及index.html，找出wwwroot目录下面的所有的目录，然后放在一个数组中
// const mkdirp = require('mkdirp')
// mkdirp('./wwwroot/css')

const fs = require('fs')

const path = './wwwroot'
var dirArr = []

// 错误的写法 注意：fs里面的方法是异步
/* fs.readdir(path, (err, data) => {
  if(err) {
    console.error(err)
  } else {
    console.log(data)
    for(let i=0;i<data.length;i++) {
      fs.stat(path + '/' + data[i], (err, states) => {
        if(err) {
          console.log(err)
        } else {
          if(states.isDirectory()) {
            dirArr.push(data[i])
          }
        }
      })
    }
  }
  console.log(dirArr)
}) */

// 1. 改造for循环，递归实现
/* fs.readdir(path, (err, data) => {
  if(err) {
    console.error(err)
  } else {
    (function getDir(i) {
      if(i === data.length) { // 执行完成
        console.log(dirArr)
        return;
      }
      fs.stat(path + '/' + data[i], (err, states) => {
        if(err) {
          console.log(err)
        } else {
          if(states.isDirectory()) {
            dirArr.push(data[i])
          }
        }
        getDir(i+1)
      })
    })(0)
  }
}) */

// 2. nodejs里面的新特性 async await
// 定义一个isDir的方法判断一个资源到底是目录还是文件
async function isDir(path) {
  return new Promise((resolve, reject) => {
    fs.stat(path, (err, states) => {
      if(err) {
        console.log(err)
        reject(err)
      } else {
        if(states.isDirectory()) {
          resolve(true)
        } else {
          resolve(false)
        }
      }
    })
  })
}
// 获取wwwroot里面的所有资源 循环遍历
function main() {
  fs.readdir(path, async (err, data) => {
    if(err) {
      console.log(err)
    } else {
      for(let i=0;i<data.length;i++) {
        let result = await isDir(path + '/' + data[i])
        if(result) {
          dirArr.push(data[i])
        }
      }
      console.log(dirArr)
    }
  })
}
main()
